package com.example.zhxy.controller;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.zhxy.model.Clazz;
import com.example.zhxy.service.ClazzService;
import com.example.zhxy.util.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import io.swagger.models.auth.In;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * Created with IntelliJ IDEA.
 * ClassName: ClazzController
 * Package: com.example.zhxy.controller
 * Description:
 * User: fzykd
 *
 * @Author: LQH
 * Date: 2023-03-15
 * Time: 21:53
 */

@Api(tags = "班级管理控制器")
@RestController
@RequestMapping("/sms/clazzController")
public class ClazzController {

    @Autowired
    private ClazzService clazzService;


    //DELETE
    //	http://localhost:9001/sms/clazzController/deleteClazz
    //班级管理 删除 和 批量删除 前端传来的JSON结合的id [1,3]
    @ApiOperation("批量或者删除的单个班级信息")
    @DeleteMapping("/deleteClazz")
    public Result deleteClazz(@ApiParam("前端传来的JSON集合") @RequestBody List<Integer> ids){
        //调用服务层 删除 使用集合 接收 removeByIds使用的集合参数
        clazzService.removeByIds(ids);

        return Result.ok();
    }


    //POST
    //	http://localhost:9001/sms/clazzController/saveOrUpdateClazz
    //班级管理的新增和修改
    //{"id":1,"name":"一年一班","number":30,"introducation":"大圣的一年一班好123123","headmaster":"大圣",
    // "email":"dasheng1231@163.com","telephone":"13260166090","gradeName":"一年级"}
    //前端传来的JSON格式的字符串 的clazz对象
    @ApiOperation("新增和修改班级信息")
    @PostMapping("/saveOrUpdateClazz")
    public Result saveOrUpdateClazz(@ApiParam("前端传来的Clazz对象 根据主键id判断是删除还是新增") @RequestBody Clazz clazz){
        //JSON字符串记得用@RequestBody解析
        //调用服务层
        clazzService.saveOrUpdate(clazz);
        return Result.ok();

    }

    //GET
    //http://localhost:9001/sms/clazzController/getClazzsByOpr/1/3?gradeName=一年级&name=3
    @ApiOperation("班级管理的分页查询你")
    @GetMapping("/getClazzsByOpr/{pageNo}/{pageSize}")
    public Result getClazzPage(@ApiParam("分页查询的页数")@PathVariable("pageNo") int pageNo,
                               @ApiParam("分页查询的页大小") @PathVariable("pageSize") int pageSize,
                               @ApiParam("班级名称的模糊关键字") Clazz clazz) { //前端传来了两个参数 都是Clazz的属性 直接使用Clazz接收
        //创建分页构造器
        Page<Clazz> page = new Page<>(pageNo, pageSize);
        //调用service  page实现类 继承了 ipage接口
        IPage iPage = clazzService.getClazzByOpr(page, clazz);


        return Result.ok(iPage);
    }

    //GET
    //	http://localhost:9001/sms/clazzController/getClazzs
    //教师管理中的班级下拉列表
    @ApiOperation("查询所有的班级信息")
    @GetMapping("/getClazzs")
    public Result getClazz(){
        //查询班级所有数据
        List<Clazz> list = clazzService.list();

        return Result.ok(list);
    }

}
